package com.report.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.report.dto.request.*;
import com.report.dto.response.ImageInfoRes;
import com.report.dto.response.ReportRes;
import com.report.dto.response.SubjectRes;
import com.report.dto.response.TodaySellRes;
import com.report.dto.response.zu.ReportItemRes;
import com.report.dto.response.zu.WeChatMiniReportRes;
import com.report.entity.PDFImage;
import com.report.entity.Report;
import com.zmh.framework.util.Result;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author summer
 * @since 2024/06/25 14:54:53
 */
public interface IReportService extends IService<Report> {

    Page<ReportRes> lists(ReportReq reportReq);

    /**
     * 今日推荐
     * @return
     */
    List<TodaySellRes> todayRecommendList();

    /**
     * 热心榜
     * @return
     */
    List<TodaySellRes> rankingList();

    /**
     * 查询行业研究、财报、招股书
     * @param recentReq
     * @return
     */
    Page<TodaySellRes> recentList(RecentReq recentReq);

    /**
     * 根据id获取报告数据
     * @param id
     * @return
     */
    ReportRes findById(Integer id);

    /**
     * 下载文件
     * @param id
     */
    void downloadReportFile(Integer id, HttpServletResponse response);

    void saveReport(ReportReq reportReq);


     Page<ImageInfoRes> imageLists(FileReq fileReq);

    /**
     * 查询洞察关联的报告
     * @return
     */
    List<ReportRes> finBreStateReport();


    /**
     * 最新报告
     * @param reportReq
     * @return
     */
    Page<ReportRes> newReportList(ReportReq reportReq);

    /**
     * 查询
     * @param reportReq
     * @return
     */
    Page<WeChatMiniReportRes> wechatReportList(WeChatMiniReportReq reportReq);

    /**
     * 保存推荐
     * @param id
     */
    void saveRecommend(RecommendReq recommendReq);

    /**
     * 生成海报
     * @param reportId
     * @return
     */
    ReportRes sendPoster(Integer reportId);

    /**
     *  查询pdf
     * @param fileReq
     * @return
     */
    Page<PDFImage> findPDFImage(ReportFileReq fileReq);

    /**
     * 专题列表
     * @param req
     * @return
     */
    Page<SubjectRes> findReportList(SpecialReq req);
}
